#pragma once

#include <QObject>
#include <PureMVC/PureMVC.hpp>

using PureMVC::Patterns::Mediator;
using PureMVC::Patterns::StdContainerAggregate;
using PureMVC::Interfaces::IMediator;
using PureMVC::Interfaces::INotification;

/**
 * @brief 登录中介者类，负责协调登录视图与其他组件的交互
 * 继承自QObject和Mediator，处理登录界面的事件和通知
 */
class LoginMediator :  public QObject ,public Mediator
{
    Q_OBJECT
public:
    /**
     * @brief 构造函数
     * @param view 登录视图组件指针
     */
    LoginMediator(void const* view);
    /**
     * @brief 析构函数
     */
    virtual ~LoginMediator(void);

    /**
     * @brief 获取感兴趣的通知列表
     * @return 返回包含通知名称的列表
     */
    virtual Mediator::NotificationNames listNotificationInterests(void) const;
    /**
     * @brief 处理接收到的通知
     * @param notification 通知对象
     */
    virtual void handleNotification(INotification const& notification);

public slots:
    /**
     * @brief 登录按钮点击事件处理槽函数
     */
    void onLogin();
};
